package com.jeeplus.modules.common.excel.common.validator.impl.base;

import com.jeeplus.common.utils.StringUtil;
import com.jeeplus.modules.common.excel.common.anno.base.NotEmpty;
import com.jeeplus.modules.common.excel.common.validator.abs.AbstractValidator;

import java.lang.reflect.Field;

/**
 * 非空校验
 * @author wang.yishu
 */
public class NotEmptyValidator extends AbstractValidator {

    private NotEmpty notEmpty;

    @Override
    public boolean canValidate(Field field) {
        notEmpty = field.getDeclaredAnnotation(NotEmpty.class);
        return notEmpty != null;
    }

    @Override
    public String toValidate(Object entity, Field field) {
        if (entity == null) return notEmpty.msg();
        field.setAccessible(true);
        try {
            Object value = field.get(entity);
            if (value instanceof String) {
                if (StringUtil.isBlank(value.toString())) {
                    return notEmpty.msg();
                }
            } else {
                if (value == null) {
                    return notEmpty.msg();
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return "";
    }
}
